package com.nova.bluetooth.xunFeiSDK.engine;


import com.iflytek.aiui.AIUIConstant;

/**
 * 引擎配置参数
 */
public class EngineConstants {


    /**录音机类型，初始化不同的recorder
     * 0 (单麦，系统录音,录制1mic数据，取系统回声消除后的音频，如果无效果是系统或硬件不支持),代码在SystemRecorder.java
     * 1 (多麦阵列,Alsa单声卡录音),代码在SingleAlsaRecorder.java
     * 2 (多麦阵列,Alsa双声卡录音),代码在DoubleAlsaRecorder.java
     * 3 (单麦，系统录音,录制1mic+1回采数据,声道1是MIC,声道2是回采),代码在SystemRecorder.java
     **/
    public final static int recorderType = 0;

    /**
     * alsa录音参数，参考文档：https://www.yuque.com/iflyaiui/zzoolv/fp0444
     * 示例参数：tinycap /sdcard/test.pcm -D 0 -d 0 -c 8 -r 16000 -b 16 -p 1536 -n 8
     * -D card 声卡号
     * -d device 设备号
     * -c channel  通道数
     */
    //*********Alsa单声卡配置，代码在SingleAlsaRecorder.java中*********
    public final static int Card = 0;      //声卡号
    public final static int Device = 1;    //声卡设备号
    public final static int Channel = 4;   //mic声道数量
    public final static boolean changeChannel = false;    //调整通道顺序和过滤无效音频开关，搭配channleParams使用
    /** 规则：填写要保留的声道号，声道号从0开始，比如第一个声道序号是0， -1表示声道数据填充为0。只对Alsa单声卡配置生效
     * 示例1："7,-1"：结果保留2个声道，输出的0号声道数据来源于输入的7号声道，输出的1号声道数据为空
     * 示例2："5,3,2"：结果保留3个声道，输出的0号声道来源于输入5号声道，输出的1号声道来源于输入的3号声道，输出的2号声道数据为输入的2号声道
     **/
    public final static String channleParams = "0,1,2,3";
    //*********单声卡配置*********

    //*********Alsa双声卡配置，代码在DoubleAlsaRecorder.java*********
    public final static int mic_Card = 0;      //声卡号
    public final static int mic_Device = 1;    //声卡设备号
    public final static int mic_Channel = 4;   //mic声道数量
    public final static int ref_Card = 0;      //回采声卡号
    public final static int ref_Device = 1;    //回采声卡设备号
    public final static int ref_Channel = 2;   //回采声道数量
    //*********双声卡配置，代码在DoubleAlsaRecorder.java*********

    //原始音频音量倍数,默认1.0f
    public static final float rawAudioGain = 1.0f;
    //识别音频音量倍数,默认1.0f
    public static final float asrAudioGain = 1.0f;

    // Alsa-Jni录音模块日志控制 1(debug) 2(info) 3(warn) 4(error) 5(fatal)
    public static final int wakeEngineLogLevel = 4;

    /*aiui唤醒类型，Voice(唤醒引擎送数据给云端识别),TEXT(唤醒引擎不送音频给云端识别，只响应文本请求)
    WakeupEngine.java判断代码：
        if (AIUIConstant.STATE_WORKING == mAIUIState&& AiuiUtils.wakeupType==AiuiUtils.WAKEUPTYPE_VOICE) {
            AiuiEngine.MSG_writeAudio(caeOutputAudio);
        }
     */
    public static int wakeupType = 1;
    //唤醒类型，1(唤醒后引擎送数据给云端识别)
    public static final int WAKEUPTYPE_VOICE = 1;
    //唤醒类型：2(唤醒后引擎不送音频给云端识别，只处理文本语义)
    public static final int WAKEUPTYPE_TEXT = 2;

    //唤醒引擎存储目录，需要与vtn.ini中设置一致
    public static final String wakeupEngineDir = "/data/user/0/com.dido.sanag/cache";
    //设备sn，需要保证每台设备sn唯一，参考文档：https://www.yuque.com/iflyaiui/zzoolv/tgftb5
    public static String serialNumber;

    // 录音机工作状态
    public static boolean isRecording = false;
    // 写音频线程工作中
    public static boolean isWriting = false;
    // 音频数据保存开关
    public static boolean saveAudio = false;
    //无意义词过滤功能：当前识别结果是否有意义
    public static boolean meaningful = false;

    //保存云端下发的tts音频
    public static boolean saveTTS = false;
    //保存aiui工作状态，状态分别是idle(空闲状态)，ready(待唤醒状态)，working(已唤醒状态)
    public static int mAIUIState = AIUIConstant.STATE_IDLE;
    //记录初始化次数，ota刷机后设备信息改变，第一次初始化会报错11217，需要再次初始化aiui绑定当前设备
    public static int aiuiInitCount = 0;

    public final static int RECORDER_DATA = 999999;
}
